home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / trial / demon / TURNPIKE.1 / CLASSES.ZIP / sun / NET / WWW / MessageHeader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-14  |  2.6 KB  |  274 lines

  1. package sun.net.www;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.PrintStream;
  6.  
  7. public class MessageHeader {
  8.    private String[] keys;
  9.    private String[] values;
  10.    private int nkeys;
  11.  
  12.    public MessageHeader() {
  13.    }
  14.  
  15.    public MessageHeader(InputStream var1) throws IOException {
  16.       this.parseHeader(var1);
  17.    }
  18.  
  19.    public String findValue(String var1) {
  20.       if (var1 == null) {
  21.          int var2 = this.nkeys;
  22.  
  23.          while(true) {
  24.             --var2;
  25.             if (var2 < 0) {
  26.                break;
  27.             }
  28.  
  29.             if (this.keys[var2] == null) {
  30.                return this.values[var2];
  31.             }
  32.          }
  33.       } else {
  34.          int var3 = this.nkeys;
  35.  
  36.          while(true) {
  37.             --var3;
  38.             if (var3 < 0) {
  39.                break;
  40.             }
  41.  
  42.             if (var1.equalsIgnoreCase(this.keys[var3])) {
  43.                return this.values[var3];
  44.             }
  45.          }
  46.       }
  47.  
  48.       return null;
  49.    }
  50.  
  51.    public String getKey(int var1) {
  52.       if (var1 >= 0 && var1 < this.nkeys) {
  53.          String var2 = this.keys[var1];
  54.          return var2 == null ? "NULLKEY" : var2;
  55.       } else {
  56.          return null;
  57.       }
  58.    }
  59.  
  60.    public String getValue(int var1) {
  61.       return var1 >= 0 && var1 < this.nkeys ? this.values[var1] : null;
  62.    }
  63.  
  64.    public String findNextValue(String var1, String var2) {
  65.       boolean var3 = false;
  66.       if (var1 == null) {
  67.          int var4 = this.nkeys;
  68.  
  69.          while(true) {
  70.             --var4;
  71.             if (var4 < 0) {
  72.                break;
  73.             }
  74.  
  75.             if (this.keys[var4] == null) {
  76.                if (var3) {
  77.                   return this.values[var4];
  78.                }
  79.  
  80.                if (this.values[var4] == var2) {
  81.                   var3 = true;
  82.                }
  83.             }
  84.          }
  85.       } else {
  86.          int var5 = this.nkeys;
  87.  
  88.          while(true) {
  89.             --var5;
  90.             if (var5 < 0) {
  91.                break;
  92.             }
  93.  
  94.             if (var1.equalsIgnoreCase(this.keys[var5])) {
  95.                if (var3) {
  96.                   return this.values[var5];
  97.                }
  98.  
  99.                if (this.values[var5] == var2) {
  100.                   var3 = true;
  101.                }
  102.             }
  103.          }
  104.       }
  105.  
  106.       return null;
  107.    }
  108.  
  109.    public void print(PrintStream var1) {
  110.       for(int var2 = 0; var2 < this.nkeys; ++var2) {
  111.          if (this.keys[var2] != null) {
  112.             var1.print(this.keys[var2] + ": " + this.values[var2] + "\n");
  113.          }
  114.       }
  115.  
  116.       var1.print("\n");
  117.    }
  118.  
  119.    public void add(String var1, String var2) {
  120.       if (this.keys == null || this.nkeys >= this.keys.length) {
  121.          String[] var3 = new String[this.nkeys + 4];
  122.          String[] var4 = new String[this.nkeys + 4];
  123.          if (this.keys != null) {
  124.             System.arraycopy(this.keys, 0, var3, 0, this.nkeys);
  125.          }
  126.  
  127.          if (this.values != null) {
  128.             System.arraycopy(this.values, 0, var4, 0, this.nkeys);
  129.          }
  130.  
  131.          this.keys = var3;
  132.          this.values = var4;
  133.       }
  134.  
  135.       this.keys[this.nkeys] = var1;
  136.       this.values[this.nkeys] = var2;
  137.       ++this.nkeys;
  138.    }
  139.  
  140.    public void set(String var1, String var2) {
  141.       int var3 = this.nkeys;
  142.  
  143.       do {
  144.          --var3;
  145.          if (var3 < 0) {
  146.             this.add(var1, var2);
  147.             return;
  148.          }
  149.       } while(!var1.equalsIgnoreCase(this.keys[var3]));
  150.  
  151.       this.values[var3] = var2;
  152.    }
  153.  
  154.    public String canonicalID(String var1) {
  155.       if (var1 == null) {
  156.          return "";
  157.       } else {
  158.          int var2 = 0;
  159.          int var3 = var1.length();
  160.  
  161.          boolean var4;
  162.          char var5;
  163.          for(var4 = false; var2 < var3 && ((var5 = var1.charAt(var2)) == '<' || var5 <= ' '); var4 = true) {
  164.             ++var2;
  165.          }
  166.  
  167.          while(var2 < var3 && ((var5 = var1.charAt(var3 - 1)) == '>' || var5 <= ' ')) {
  168.             --var3;
  169.             var4 = true;
  170.          }
  171.  
  172.          return var4 ? var1.substring(var2, var3) : var1;
  173.       }
  174.    }
  175.  
  176.    public void parseHeader(InputStream var1) throws IOException {
  177.       this.nkeys = 0;
  178.       if (var1 != null) {
  179.          char[] var2 = new char[10];
  180.  
  181.          String var9;
  182.          String var11;
  183.          for(int var3 = var1.read(); var3 != 10 && var3 != 13 && var3 >= 0; this.add(var11, var9)) {
  184.             int var4 = 0;
  185.             int var5 = -1;
  186.             boolean var7 = var3 > 32;
  187.             var2[var4++] = (char)var3;
  188.  
  189.             label103:
  190.             while(true) {
  191.                int var6;
  192.                if ((var6 = var1.read()) < 0) {
  193.                   var3 = -1;
  194.                   break;
  195.                }
  196.  
  197.                switch (var6) {
  198.                   case 9:
  199.                      var6 = 32;
  200.                   case 32:
  201.                      var7 = false;
  202.                      break;
  203.                   case 10:
  204.                   case 13:
  205.                      var3 = var1.read();
  206.                      if (var6 == 13 && var3 == 10) {
  207.                         var3 = var1.read();
  208.                         if (var3 == 13) {
  209.                            var3 = var1.read();
  210.                         }
  211.                      }
  212.  
  213.                      if (var3 == 10 || var3 == 13 || var3 > 32) {
  214.                         break label103;
  215.                      }
  216.  
  217.                      var6 = 32;
  218.                      break;
  219.                   case 58:
  220.                      if (var7 && var4 > 0) {
  221.                         var5 = var4;
  222.                      }
  223.  
  224.                      var7 = false;
  225.                }
  226.  
  227.                if (var4 >= var2.length) {
  228.                   char[] var8 = new char[var2.length * 2];
  229.                   System.arraycopy(var2, 0, var8, 0, var4);
  230.                   var2 = var8;
  231.                }
  232.  
  233.                var2[var4++] = (char)var6;
  234.             }
  235.  
  236.             while(var4 > 0 && var2[var4 - 1] <= ' ') {
  237.                --var4;
  238.             }
  239.  
  240.             if (var5 <= 0) {
  241.                var11 = null;
  242.                var5 = 0;
  243.             } else {
  244.                var11 = String.copyValueOf(var2, 0, var5);
  245.                if (var5 < var4 && var2[var5] == ':') {
  246.                   ++var5;
  247.                }
  248.  
  249.                while(var5 < var4 && var2[var5] <= ' ') {
  250.                   ++var5;
  251.                }
  252.             }
  253.  
  254.             if (var5 >= var4) {
  255.                var9 = new String();
  256.             } else {
  257.                var9 = String.copyValueOf(var2, var5, var4 - var5);
  258.             }
  259.          }
  260.  
  261.       }
  262.    }
  263.  
  264.    public String toString() {
  265.       String var1 = super.toString();
  266.  
  267.       for(int var2 = 0; var2 < this.keys.length; ++var2) {
  268.          var1 = var1 + "{" + this.keys[var2] + ": " + this.values[var2] + "}";
  269.       }
  270.  
  271.       return var1;
  272.    }
  273. }
  274.